home *** CD-ROM | disk | FTP | other *** search
- /*
- * Yamana's Otomeza Plug-in Tool
- * ゆらゆら
- *
- * 1995.07.07 乙女座用プラグイン対応版
- * 1995.08.18 cos テーブルを使い微妙にびみょ~に高速化
- *
- */
- #include "otome_pi.h"
- #include "costbl.h"
-
- const char longname[] = "EFFECT: ゆらゆら";
- int cnfg_max = 3;
- PI_CNFG cnfg[] =
- { /* 1234567890123456 ,min,max,def,set */
- { "横 ← → 縦 " , 0, 2, 0, 0 },
- { "揺れの幅" , 4, 64, 4, 4 },
- { "揺れの大きさ" , 2, 32, 3, 3 }
- };
-
- #define USE_ENV PI_SET_ENV
- #define USE_TYPE PI_EFFC_ALORSL
-
- #include "otome_pi.c"
-
-
- /*************** ゆらゆらテーブル作成 *****************/
-
- void mk_table( wide,height,tbl )
- int wide,height,*tbl;
- {
- int i;
- double d;
-
- for( i=0; i<wide; i++ )
- {
- // d = (double)( height * sin( (double)((_PI * i) / wide) )+0.8);
- // tbl[ i ] = (int)( d );
- tbl[ i ] = (height * sin256( (i*128)/wide )+ 0x80)>>8;
- tbl[ wide+i ] = -tbl[i] ;
- }
-
- }
-
- /****************** ゆらゆら実行 ***********************/
-
- void yurayura( mode,fr, wide,tbl )
- FRAME *fr;
- int mode,wide,*tbl;
- {
- FRAME para;
- int i;
-
- /* ゆらゆら横 */
- if( mode<2 )
- { para.lupx = fr->lupx ;
- para.rdwx = fr->rdwx ;
- for( i=(fr->lupy); i<=(fr->rdwy) ; i++ )
- { para.lupy = para.rdwy = i ;
- EGB_partScroll( EgbPtr,0, tbl[ i % wide ],0, ¶ );
- }
- }
-
- /* ゆらゆら縦 */
- if( mode>0 )
- { para.lupy = fr->lupy ;
- para.rdwy = fr->rdwy ;
- for( i=(fr->lupx); i<=(fr->rdwx) ; i++ )
- { para.lupx = para.rdwx = i ;
- EGB_partScroll( EgbPtr,0, 0,tbl[ i % wide ], ¶ );
- }
- }
-
- }
-
-
- /********************************/
-
- int APL_exec()
- {
- int wide,height,mode;
- int *yure_tbl;
- FRAME fr;
-
- mode = cnfg[0].val; /* 0:横 2:縦 1:両方 */
- wide = cnfg[1].val; /* 4~64 */
- height= cnfg[2].val; /* 2~32 */
-
- if( (yure_tbl = (int*)PI_MALLOC( sizeof(int)*(wide*2+1) ))==NULL )
- return PI_ERROR_NO_MEMORY;
-
- mk_table( wide, height, yure_tbl );
-
- fr.lupx = WORD( g_para + 0 );
- fr.lupy = WORD( g_para + 2 );
- fr.rdwx = WORD( g_para + 4 );
- fr.rdwy = WORD( g_para + 6 );
- EGB_writePage( EgbPtr, pi_imge->page );
-
- yurayura( mode, &fr, wide*2,yure_tbl );
-
- PI_FREE( yure_tbl );
-
- return NOERR;
- }
-
-